\section{火焰的渲染方法}

在流体绘制方面算法已经比较成熟，基于物理的流体模拟一般采用体绘制的方法。
三维纹理映射方法的绘制速度很快，但效果不是很理想。因此，目前常采用光线
投射(Ray Casting)算法等速度慢但绘制效果好的算法。

Ray Casting算法主要过程如下：从视点出发， 向图像空间中每一像素的中心发
出一条光线， 如果光线与场景中景物不相交， 说明没有从光源出发的光线对此
像素的亮度作贡献，结束光线跟踪。如果光线与景物有交点， 则此时应依据当前
交点的景物表面的情况进行处理:
\begin{enumerate}
\item 理想漫反射面， 结束光线跟踪。
\item 理想镜面， 沿镜面反射方向继续跟踪。
\item 规则透射面， 沿规则透射方向跟踪。多数情况下一条光线会分为反射光线、
  透射光线两条。
\end{enumerate}
上述过程是一递归过程， 对每一光线的跟踪构成了一棵二叉树，一般有两种终止条件:
\begin{enumerate}
\item 光线与景物没有交点; 或者景物表面为漫反射面; 或者跟踪层次超出用户
  设定的最大跟踪层数。
\item 跟踪光线对像素亮度的贡献小于给定的阈值。
\end{enumerate}

光线跟踪的加速方法主要有: 包围盒技术、基于空间连贯性的空间剖分技
术\cite{review:Wangxiaohua}。而在绘制真实感方面，Kun
Zhou等\cite{Zhou:2008}提出了一种补偿的Ray Casting算法，可以绘制随光源动
态变化的烟雾运动效果。
